package Enters_Protegits is
  
  type Enter_Protegit(Initial: Integer := 0) is limited private;

  function Get(E: in Enter_Protegit) return Integer;
  procedure Increment(E: in out Enter_Protegit; Inc: in Integer := 1);
  procedure Set(E: out Enter_Protegit; Val: in Integer);

private
    
  protected type Enter_Protegit(Initial: Integer := 0) is
    function Get return Integer;
    procedure Increment(Inc: in Integer := 1);
    procedure Set(Val: in Integer);
  private
    Value: Integer := Initial;
  end Enter_Protegit;

end Enters_Protegits;
